package com.easy.controller;

import com.easy.bean.Production_order;
import com.easy.service.ProductionOrderService;
import com.easy.util.Page;
import com.easy.util.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@CrossOrigin
@RequestMapping("/api/production_order")
public class ProductionOrderController {

    @Autowired
    ProductionOrderService productionOrderService;

    // 新增生产订单
    @PostMapping
    public Result add(@RequestBody Production_order order) {
        return Result.success(productionOrderService.add(order));
    }

    // 编辑生产订单
    @PutMapping("/{id}")
    public Result edit(@PathVariable("id") Integer id, @RequestBody Production_order order) {
        order.setId(id);
        return Result.success(productionOrderService.edit(order));
    }

    // 删除生产订单
    @DeleteMapping("/{id}")
    public Result del(@PathVariable("id") Integer id) {
        return Result.success("删除成功", productionOrderService.del(id));
    }

    // 查询所有生产订单（可模糊查询 status）
    @GetMapping
    public Result all(
            @RequestParam(name = "status", required = false, defaultValue = "") String status
    ) {
        return Result.success(productionOrderService.all(status));
    }

    // 查询单个生产订单
    @GetMapping("/{id}")
    public Result one(@PathVariable("id") Integer id) {
        return Result.success(productionOrderService.one(id));
    }

    // 分页查询 - 改进版本，处理可能的空值问题
    @GetMapping("/page")
    public Result page(@RequestParam(defaultValue = "1") Integer page,
                       @RequestParam(defaultValue = "10") Integer limit,
                       Production_order order) {
        // 确保分页参数有效
        int validPage = (page != null && page > 0) ? page : 1;
        int validLimit = (limit != null && limit > 0) ? limit : 10;
        
        // 创建Page对象并设置参数
        Page pageObj = new Page();
        pageObj.setPage(validPage);
        pageObj.setLimit(validLimit);
        
        // 执行分页查询
        List<Production_order> result = productionOrderService.page(pageObj, order);
        
        // 确保结果不为空
        if (result == null) {
            result = new java.util.ArrayList<>();
        }
        
        return Result.success(pageObj);
    }
}